package br.ufc.spaceinvaders.teste;

import java.awt.event.KeyEvent;

import javax.swing.JLabel;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

import br.ufc.spaceinvaders.Nave;
/**
 * 
 * @author alexsandro
 *
 *	Teste unitário da classe inimigo
 *
 */
public class TesteNave {

	private Nave nave;
	
	/**
	 * Método que executa antes dos testes para inicializar o objeto nave
	 */
	@Before
	public void initTest(){
		this.nave = new Nave();
	}
	
	/**
	 * Teste do método "mexer" do objeto nave quando disparado o evento de teclado da seta direcional "esquerda"
	 */
	@Test
	public void testLeft() {
		/**
		 * Simulação de um evento de teclado da seta direcional esquerda
		 */
		KeyEvent event = new KeyEvent(new JLabel(), 1, 1, 1, KeyEvent.VK_LEFT);
		
		int x = nave.getX();
		
		this.nave.keyPressed(event);
		this.nave.mexer();
		this.nave.keyReleased(event);
		
		Assert.assertEquals(this.nave.getX(), x - 1);
		
	}
	

	/**
	 * Teste do método "mexer" do objeto nave quando disparado o evento de teclado da seta direcional "direita"
	 */
	@Test
	public void testRigth() {
		KeyEvent event = new KeyEvent(new JLabel(), 1, 1, 1, KeyEvent.VK_RIGHT);
		
		int x = nave.getX();
		
		this.nave.keyPressed(event);
		this.nave.mexer();
		this.nave.keyReleased(event);
		
		Assert.assertEquals(this.nave.getX(), x + 1);
		
	}


	/**
	 * Teste do método "mexer" do objeto nave quando disparado o evento de teclado da seta direcional "cima"
	 */
	@Test
	public void testUp() {
		KeyEvent event = new KeyEvent(new JLabel(), 1, 1, 1, KeyEvent.VK_UP);
		
		int y = nave.getY();
		
		this.nave.keyPressed(event);
		this.nave.mexer();
		this.nave.keyReleased(event);
		
		Assert.assertEquals(this.nave.getY(), y - 1);
		
	}
	

	/**
	 * Teste do método "mexer" do objeto nave quando disparado o evento de teclado da seta direcional "baixo"
	 */
	@Test
	public void testDown() {
		KeyEvent event = new KeyEvent(new JLabel(), 1, 1, 1, KeyEvent.VK_DOWN);
		
		int y = nave.getY();
		
		this.nave.keyPressed(event);
		this.nave.mexer();
		this.nave.keyReleased(event);
		
		Assert.assertEquals(this.nave.getY(), y + 1);
		
	}
}
